package com.jandar.parser;

import java.io.File;
import java.sql.Connection;

/**
 * 解析器接口。
 * 
 * @author pqj
 * @version 2009-6-2
 */
public interface IParser {

	int INSERT_OPTION = 1;

	int UPDATE_OPTION = 2;

	/**
	 * 插入或者更新操作。 以最大限度处理文件中的记录，有出错的记录，写入日志。 统计插入条数、更新条数、失败条数。
	 * 
	 * @param conn 数据库连接
	 * @param file 指定文件
	 * @throws Exception 异常
	 */
	void insertOrUpdate(Connection conn, File file) throws Exception;
	
	/**
	 * 错误记录写入日志文件。放在error目录。文件名以[tableName]-[ERROR]-[date].txt格式命名。
	 * 
	 * @param failureFileName 错误记录文件名
	 * @param values 字段值
	 * @param length 长度
	 */
	void writeFailureRecord(String failureFileName, String[] values, int length);
	
	/**
	 * 错误记录写入日志文件。放在error目录。文件名以[tableName]-[ERROR]-[date].txt格式命名。
	 * 
	 * @param failureFileName 错误记录文件名
	 * @param line 字段值
	 */
	void writeFailureRecord(String failureFileName, String line);

	/**
	 * 返回插入条数。
	 * 
	 * @return 插入条数
	 */
	int getInsertCount();

	/**
	 * 返回更新条数。
	 * 
	 * @return 更新条数
	 */
	int getUpdateCount();

	/**
	 * 返回失败条数。
	 * 
	 * @return 失败条数
	 */
	int getFailureCount();

	/**
	 * 返回总条数。
	 * 
	 * @return 总条数
	 */
	int getTotalCount();
	
	/**
	 * 返回交换条数。
	 * 
	 * @return 交换条数
	 */
	int getChangeCount();
}
